package com.nccs.arithmetic;

/**
 * @author xuzengsheng
 * @program nssc-parent
 * @createTime 2021-09-14- 15:55:00
 * @description 设计模式--模板方法
 */

public abstract class AbstractSortHandler {

    //算法名称
    private String arithmeticName;

    //定义一个无序数组
    int[] arry = new int[]{1, 5, 8, 2, 3, 9, 4};

    public AbstractSortHandler() {
    }


    public AbstractSortHandler(String arithmeticName) {
        this.arithmeticName = arithmeticName;
    }


    /**
     * 模板方法
     */

    public final void execute() {
        prefixPrint(); //前缀方法
        sort(arry); //排序
        suffixPrint(arry);//后缀方法
    }


    /**
     * 前缀方法
     */
    private void prefixPrint() {
        System.out.println(arithmeticName);
        System.out.print("排序前：");
        for (int i : arry) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    /**
     * 抽象方法--排序
     *
     * @param arry
     * @return
     */
    public abstract void sort(int[] arry);

    /**
     * 后缀方法
     *
     * @param arry
     */
    private void suffixPrint(int[] arry) {
        System.out.print("排序后：");
        for (int i : arry) {
            System.out.print(i + " ");
        }
    }


}
